使用內建 AI 翻譯

發布日期:2024 年 11 月 13 日,上次更新日期:2025 年 5 月 20 日

說明 網頁 額外資訊 Chrome 狀態 Intent
MDN Chrome 138 開發人員預覽版 Chrome 138 開發人員預覽版 查看 意圖進行實驗

在 Chrome 中使用 Translator API,透過瀏覽器提供的 AI 模型翻譯文字。

你的網站可能已經提供多種語言的網站內容,讓全球觀眾都能存取。使用者可透過 Translator API 以母語進行貢獻。舉例來說,使用者可以使用第一語言參與支援聊天,而您的網站會將訊息翻譯成支援專員使用的語言,然後傳送給使用者。這麼做可為所有使用者提供流暢、快速且無障礙的體驗。

過去,要翻譯網站上的內容,通常必須使用雲端服務。首先,來源內容會上傳至伺服器,然後執行翻譯至目標語言的作業,接著下載結果文字並傳回給使用者。在用戶端上執行翻譯作業,可節省伺服器行程所需的時間,以及代管翻譯服務的費用。

開始使用

Translator API 可在 Chrome 138 穩定版中使用。首先,請執行功能偵測,確認瀏覽器是否支援 Translator API。

if ('Translator' in self) {
  // The Translator API is supported.
}

雖然您一律都知道翻譯的目標語言,但不一定會知道原文語言。在這種情況下,您可以使用 Language Detector API

查看硬體需求

Language Detector API 和 Translator API 僅適用於 Chrome 桌面版。

在 Chrome 中,Prompt API、Summarizer API、Writer API 和 Rewriter API 會在下列條件下運作:

  • 作業系統:Windows 10 或 11;macOS 13 以上版本 (Ventura 以上版本);或 Linux。由 Gemini Nano 支援的 API 尚未支援 Android、iOS 和 ChromeOS 版 Chrome。
  • 儲存空間:含有 Chrome 設定檔的磁碟區至少有 22 GB。
  • GPU:VRAM 必須大於 4 GB。
  • 網路:無限上網流量或無限上網連線。

這些規定適用於您在開發過程中,以及使用您建構的功能的使用者。

確認支援的語言組合

翻譯功能會透過語言套件進行管理,並視需要下載。語言包就像特定語言的字典。

  • sourceLanguage:文字目前的語言。
  • targetLanguage:文字應翻譯成最終語言。

使用 BCP 47 語言代碼做為字串。例如 'es' (西班牙文) 或 'fr' (法文)。

const translatorCapabilities = await Translator.availability({
  sourceLanguage: 'es',
  targetLanguage: 'fr',
});
// 'available'

availability() 函式會傳回含有下列值的承諾:

  • "unavailable":實作方式不支援指定語言的翻譯或語言偵測。
  • "downloadable":實作項目支援指定語言的翻譯或語言偵測,但必須先下載才能繼續。下載項目可能是瀏覽器模型。
  • "downloading":實作項目支援指定語言的翻譯或語言偵測。瀏覽器正在完成進行中的下載作業,這是建立相關聯物件的一部分。
  • "available":實作內容支援指定語言的翻譯或語言偵測,且所有必要的下載作業都已完成。

使用 downloadprogress 事件監聽模型下載進度:

const translator = await Translator.create({
  sourceLanguage: 'es',
  targetLanguage: 'fr',
  monitor(m) {
    m.addEventListener('downloadprogress', (e) => {
      console.log(`Downloaded ${e.loaded * 100}%`);
    });
  },
});

如果下載失敗,downloadprogress 事件就會停止,且 ready 應許會遭到拒絕。

建立及執行翻譯器

如要建立翻譯器,請呼叫非同步 create() 函式。這個函式需要一個含有兩個欄位的選項參數,一個用於 sourceLanguage,另一個用於 targetLanguage

// Create a translator that translates from English to French.
const translator = await Translator.create({
  sourceLanguage: 'en',
  targetLanguage: 'fr',
});

取得翻譯器後,請呼叫非同步 translate()

await translator.translate('Where is the next bus stop, please?');
// "Où est le prochain arrêt de bus, s'il vous plaît ?"

依序翻譯

系統會依序處理翻譯作業。如果您傳送大量文字進行翻譯,系統會先完成先前的翻譯作業,再處理後續的翻譯作業。

為了盡可能妥善回應要求,請將要求分成多個區塊,並新增載入介面 (例如旋轉圖示),以便傳達翻譯作業正在進行中。

示範

您可以在 Translator 和 Language Detector API 遊樂場中,查看與 Language Detector API 搭配使用的 Translator API。

標準化作業

我們正在努力將 Translator API 標準化,以確保跨瀏覽器的相容性。

我們的 API 提案獲得社群支持,並已移至 W3C Web Incubator Community Group 進一步討論。Chrome 團隊向 W3C 技術架構小組索取意見回饋,並向 MozillaWebKit 詢問他們的標準立場。

您可以加入Web Incubator 社群群組,參與標準制定工作。

提供意見

我們想瞭解您使用 Language Detector API 建構的內容。在 XYouTubeLinkedIn 上與我們分享網站和網路應用程式。

如要提供 Chrome 實作方式的意見回饋,請提交錯誤報告功能要求